var Type = require('./type');
function Dup(opt) {
  var dup = { s: {} };
  opt = opt || { max: 1000, age: 1000 * 9 }; //1000 * 60 * 2};
  dup.check = function(id) {
    var tmp;
    if (!(tmp = dup.s[id])) {
      return false;
    }
    if (tmp.pass) {
      return (tmp.pass = false);
    }
    return dup.track(id);
  };
  dup.track = function(id, pass) {
    var it = dup.s[id] || (dup.s[id] = {});
    it.was = time_is();
    if (pass) {
      it.pass = true;
    }
    if (!dup.to) {
      dup.to = setTimeout(function() {
        var now = time_is();
        Type.obj.map(dup.s, function(it, id) {
          if (it && opt.age > now - it.was) {
            return;
          }
          Type.obj.del(dup.s, id);
        });
        dup.to = null;
      }, opt.age + 9);
    }
    return it;
  };
  return dup;
}
var time_is = Type.time.is;
module.exports = Dup;
